// 序列中逆序对的数目
// 测试链接：https://www.luogu.com.cn/problem/P1908
// 提交以下的code，可以直接通过

#include <bits/stdc++.h>

using namespace std;

const int MAXN = 5e5 + 10;
int arr[MAXN];
int help[MAXN];
int n;

long long merge(int l, int m, int r)
{
    // 统计部分
    long long ans = 0;
    for(int i = l, j = m + 1, sum = 0; i <= m; ++i)
    {
        while(j <= r && arr[i] > arr[j]) ++sum, ++j;
        ans += sum;
    }

    // 正常的 merge 过程
    int i = l, a = l, b = m + 1;
    while(a <= m && b <= r)
    {
        help[i++] = arr[a] <= arr[b] ? arr[a++] : arr[b++];
    }
    while(a <= m) help[i++] = arr[a++];
    while(b <= r) help[i++] = arr[b++];
    for(i = l; i <= r; ++i) arr[i] = help[i];

    return ans;
}

long long count(int l, int r)
{
    if(l >= r) return 0;

    int m = l + ((r - l) >> 1);
    return count(l, m) + count(m + 1, r) + merge(l, m, r);
}

int main()
{
    scanf("%d", &n);
    for(int i = 0; i < n; ++i)
    {
        scanf("%d", &arr[i]);
    }
    printf("%lld", count(0, n - 1));

    return 0;
}